package com.djl.sqtg.mapper;

import com.djl.sqtg.entity.*;
import com.djl.sqtg.service.IGoodsService;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
//映射器接口
/** 处理用户数据操作的持久层接口 */
public interface UserMapper {

    Integer register(String username,String avatar,String openid, String registertime);
    Integer updateTzidNull(Integer uid);
    User findOpenid(String openid);
//    足迹
    Integer footprint(Integer uid,Integer gid,String browsetime);
    List<Goods> getFootprintByUid(Integer uid);
    //    收藏
    Integer collection(Integer uid,Integer gid,String collectiontime);
    Collection getCollection(Integer uid,Integer gid);
    List<Collection> getAllCollection(Integer uid);
    Integer delCollection(Integer cid);
    Integer delCollectionByUidGid(Integer uid,Integer gid);

    /**
     * 根据用户名查询用户数据
     * @param username 用户名
     * @return 匹配的用户数据，如果没有匹配的数据，则返回null
     */
    List<User> findByUsername(String username);


    /**
     * 根据用户id查询用户数据
     * @param uid 用户id
     * @return 匹配的用户数据，如果没有匹配的用户数据，则返回null
     */
    User findByUid(Integer uid);


    /**
     * 根据uid更新用户资料
     * @param user 封装了用户id和新个人资料的对象
     * @return 受影响的行数
     */
    Integer updateInfoByUid(User user);

    /**
     * 根据uid更新用户的头像
     * @param uid 用户的id
     * @param avatar 新头像的路径
     * @param modifiedUser 修改执行人
     * @param modifiedTime 修改时间
     * @return 受影响的行数
     */
    Integer updateAvatarByUid(
            @Param("uid") Integer uid,
            @Param("avatar") String avatar,
            @Param("modifiedUser") String modifiedUser,
            @Param("modifiedTime") Date modifiedTime);

//    List<User> getAllUsers();
    Integer getAllUsers();
    List<User>  getAllUser();
    Integer getAllUsersByTzid(Integer tzid);

    Integer delUserByUid(Integer uid);
    Integer delManyUsers(Integer[] uid);

    List<User>  getUserByPageNum(Integer pageNum, Integer pageSize);
    List<User>  getGroupByTzid(Integer pageNum, Integer pageSize, Integer tzid);

    List<User>  getUserBySearchTzid(String username, String telep,Integer pageNum, Integer pageSize,Integer tzid);
    Integer getUserBySearchCountTzid(String username, String telep,Integer tzid);

    Integer getUserBySearchCount(String startDate,String endDate,String username, String telep,Integer memberstate);
    List<User>  getUserBySearch(String startDate,String endDate,String username, String telep,Integer memberstate,Integer pageNum, Integer pageSize);
    Integer userNewAdd(String date); //获取某日某月某年的用户数
    Integer userNewAddTimePeriod(String startDate,String endDate); //获取时间段内的用户数
    Integer memberNewAddTimePeriod(String startDate,String endDate); //获取时间段内的会员数
    Integer userNum(); //用户总数
    Integer memberNum(); //会员总数
    Integer memberNewAdd(String date); //取某日某月某年的会员总数
    List<Colonel> getColonelAddress();
    Integer chooeseColonel(Integer uid,Integer tzid);
    List<Coupon> getCoupon();
}
